#!/bin/ash

func_usage()
{
  echo "$*"
  echo "Usage: $0 [ -e <erase-xsvf-tar.gz> ] [ -p <prog-xsvf-tar.gz> ]"
  exit 1
}

eraseAction=false
progAction=false
ahiloadAction=false
#note do not have a load action defined in the programmer for usb

verbose=false
programmer="/opt/agilent/bin/esm-fpga-upgrade"

#
# Parse Command Line Arguments
#

eval "set -- $AHI_PROGRAMOPTS "'"$@"'
while true
do case "$1" in
	-D ) set -x  # Debug script enabled
        ;;
	-t ) shift || func_usage
        ROOTDIR=$1 # Set a new root directory
        ;;
	-v ) verbose=true
        ;;
	-e ) eraseAction=true;
	     shift || func_usage;
	     eraseFile=$1;
	     
        ;;
	-p ) progAction=true;
	     ahiloadAction=true;
	     shift || func_usage;
	     progFile=$1;
        ;;
	-- ) break;;
	-* ) func_usage Unknown option "$1";;
	*  )
     break;;
   esac
   shift
done

[ "X$1" = "X--" ] && shift


#cd `dirname $0`;

logger='logger -t fpga-program ';

# Terminate the shelf manager
#echo "Stopping Shelf Manager..."
clia terminate

# Get file info
if $eraseAction
then
  [ -f "$eraseFile" ] || func_usage "Erase File $eraseFile not found"
  erase_xsvf_size=`tar -zvtf $eraseFile | awk '{print $3}'`;
  erase_xsvf_name=`tar -zvtf $eraseFile | awk '{print $6}'`;
fi

if $progAction
then
  [ -f "$progFile" ] || func_usage "Program File $progFile not found"
  prog_xsvf_size=`tar -zvtf $progFile | awk '{print $3}'`;
  prog_xsvf_name=`tar -zvtf $progFile | awk '{print $6}'`;
fi

# Program
if $eraseAction
then
echo "INSTALL:  Erasing...";
  tar -xOzf $eraseFile | $programmer -stdin $erase_xsvf_size
  result=$?
  if test $result != 0; then
    $logger "Failed to program $erase_xsvf_name. Error: $result";
    exit 1;
  fi;
fi



#echo "Programming $ahi_xsvf_name...";
if $progAction
then
echo "INSTALL:  Programming...";
  tar -xOzf $progFile | $programmer -stdin $prog_xsvf_size
  result=$?

  if test $result != 0; then
    $logger "Failed to program $prog_xsvf_name. Error: $result";
    exit 1;
  fi;
fi;


if $ahiloadAction
then
echo "INSTALL:  Activating...";
  $programmer -eepromtofpga
  result=$?

  if test $result != 0; then
    $logger "$programmer -eepromtofpga failed. Error: $result";
    exit 1;
  fi;
fi

exit 0
